package com.shangyueshang.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.YearMonth;

/**
 * @author: JokeyZheng
 * @email: zhengjingfeng@ruqimobility.com
 * @created: 2022/1/17 16:46
 * @version: v1.0.0
 *
 * <p>固定成本管理表</p>
 */
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class FixedCost extends BaseModel implements Serializable {

    /**
     * 统计月份
     */
    @JsonFormat(pattern = "yyyy-MM")
    private YearMonth tradeMonth;

    /**
     * 美工费用
     */
    private BigDecimal artFee;

    /**
     * 样品费用
     */
    private BigDecimal sampleFee;

    /**
     * 包装材料费用
     */
    private BigDecimal packMaterialFee;

    /**
     * 人工费用
     */
    private BigDecimal laborFee;

    /**
     * 办公租金(含水电)
     */
    private BigDecimal officeRentFee;

    /**
     * 财务记账费用
     */
    private BigDecimal accountingFee;

    /**
     * 头程费用
     */
    private BigDecimal headwayFee;

    /**
     * 其他费用
     */
    private BigDecimal otherFee;

    /**
     * 备注说明
     */
    private String remark;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 创建人
     */
    private String creator;

    /**
     * 最近操作时间
     */
    private LocalDateTime lastUpdateTime;

    /**
     * 最近操作者
     */
    private String lastUpdator;

    /**
     * 返回费用总计
     *
     * @return
     */
    public BigDecimal getTotalFee() {
        return artFee.add(sampleFee)
                .add(packMaterialFee)
                .add(laborFee)
                .add(officeRentFee)
                .add(accountingFee)
                .add(headwayFee)
                .add(otherFee);
    }

}
